home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / ISSUE05 / GREPENG / GREPENG.ZIP / GREPLOAD.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1995-11-18  |  1.7 KB  |  71 lines

  1. {*******************************************************
  2.                 GrepLoad Unit
  3.  
  4. This unit explicitly loads REGEXP.DLL (shipped with BP 7.01).
  5.  
  6.  
  7.                 Paul Warren
  8.        HomeGrown Software Development
  9.      (c) 1995 Langley British Columbia.
  10.               (604) 530-9097
  11.        e-mail:  hg_soft@uniserve.com
  12.   Home page: http://haven.uniserve.com/~hg_soft
  13.  
  14. ********************************************************}
  15.  
  16. unit GrepLoad;
  17.  
  18. interface
  19.  
  20. const
  21.   GrepLoaded: Boolean = False; { presume nothing! }
  22.  
  23. type
  24.   HRegexp = Word;
  25.  
  26.   TRegMatch = record
  27.     Start: Word;        { Start of match }
  28.     Stop:  Word;        { End of match }
  29.   end;
  30.  
  31. var
  32.   RegComp: function(Pattern: PChar; var Error: Integer): HRegexp;
  33.   RegExec: function(Regex: HRegexp; Str: PChar; var Match: TRegMatch): Integer;
  34.   RegError: function(Regex: HRegexp; Error: Integer; ErrorBuf: array of Char): Integer;
  35.   RegFree: procedure(Regex: HRegexp);
  36.  
  37. implementation
  38. {$IFDEF WINDOWS}
  39. uses WinProcs;
  40. Const SEM_NoOpenFileErrorBox = $8000;
  41. {$ELSE}
  42. uses WinAPI;
  43. {$ENDIF}
  44.  
  45. var
  46.   SaveExit: pointer;
  47.   DLLHandle: Word;
  48.  
  49.     procedure NewExit; far;
  50.     begin
  51.       ExitProc := SaveExit;
  52.       FreeLibrary(DLLHandle)
  53.     end {NewExit};
  54.  
  55. begin
  56.   {$IFDEF WINDOWS}
  57.   SetErrorMode(SEM_NoOpenFileErrorBox);
  58.   {$ENDIF}
  59.   DLLHandle := LoadLibrary('REGEXP.DLL');
  60.   if DLLHandle >= 32 then
  61.   begin
  62.     GrepLoaded := True;
  63.     SaveExit := ExitProc;
  64.     ExitProc := @NewExit;
  65.     @RegComp := GetProcAddress(DLLHandle,'REGCOMP');
  66.     @RegExec := GetProcAddress(DLLHandle,'REGEXEC');
  67.     @RegError := GetProcAddress(DLLHandle,'REGERROR');
  68.     @RegFree := GetProcAddress(DLLHandle,'REGFREE');
  69.   end
  70. end.
  71.